var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var swig = require('swig');

var index = require('./routes/index');
var main = require('./routes/main');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('html',swig.renderFile);
app.set('view engine', 'html');
//开发过程关闭模板缓存
swig.setDefaults({cache :false});

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
//加载静态文件资源
app.use(express.static(path.join(__dirname, 'public')));
//app.use('/public',express.static(__dirname + '/public'));

app.use('/', index);
app.use('/main', main);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

/*
* mongodb 数据库
* */
var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/blog',function (err) {
    if(!err){
         console.log('connect to mongodb');
    } else {
         throw err;
    }
});


/*
 mongoose.connect('mongodb://localhost/blog');
 var db = mongoose.connection;
 db.on('error',console.error.bind(console,'connection error'));
 db.once('open',function (callback) {
 console.log(callback.toString());
 });
 */

module.exports = app;
